package com.ceair.api;

import com.ceair.entity.result.Result;
import com.ceair.entity.vo.Oauth2BasicUserVO;
import com.ceair.entity.vo.SysRoleVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author wangbaohai
 * @ClassName SystemFeignClient
 * @description: 系统设置对外Feign接口
 * @date 2025年04月27日
 * @version: 1.0.0
 */
@FeignClient(name = "pm-system")
public interface SystemFeignClient {

    /**
     * 查询所有用户信息
     * <p>
     * 该方法通过POST请求处理查询所有用户信息的请求它主要用于提供一个接口，
     * 让客户端能够获取系统中所有用户的列表信息
     *
     * @return 返回一个Result对象，其中包含用户列表（Oauth2BasicUserVO类型）如果查询成功，
     * 则在Result对象中包含用户列表数据；如果查询失败，则在Result对象中包含错误信息
     */
    @PostMapping("/systemClient/api/v1/user/queryAllUsers")
    Result<List<Oauth2BasicUserVO>> queryAllUsers();

    /**
     * 查询所有角色信息
     * <p>
     * 该接口用于获取系统中所有的角色信息，返回一个包含多个SysRoleVO对象的列表
     * 主要用于用户管理、权限控制等场景
     *
     * @return 包含SysRoleVO对象列表的Result对象，表示查询结果和状态
     */
    @PostMapping("/systemClient/api/v1/user/queryAllRoles")
    Result<List<SysRoleVO>> queryAllRoles();

    /**
     * 根据用户ID查询角色ID列表
     *
     * @param userId 用户ID，可选参数，用于查询角色ID列表
     * @return 返回一个Result对象，其中包含用户的角色ID列表
     */
    @PostMapping("/systemClient/api/v1/user/queryRoleIdsByUserId")
    Result<List<Long>> queryRoleIdsByUserId(@RequestParam(required = false , name = "userId") Long userId);

    /**
     * 根据用户ID查询用户信息
     *
     * @param userId 用户ID，作为查询条件，用于定位特定的用户信息
     * @return 返回一个Result对象，其中包含查询到的Oauth2BasicUserVO用户信息
     */
    @PostMapping("/systemClient/api/v1/user/queryUserById")
    Result<Oauth2BasicUserVO> queryUserById(@RequestParam(required = false , name = "userId") Long userId);

}
